package com.the_last.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.the_last.pojo.po.User;
import com.the_last.pojo.vo.UserWithPermissionList;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserMapper extends BaseMapper<User> {
    
    List<String> selectUserPermissions(@Param("userId") Long userId);
    
    /**
     * 根据用户名查询用户基本信息
     * @param username 用户名
     * @return 用户基本信息
     */
    User selectUserByUsername(@Param("username") String username);
    
    /**
     * 一次性查询用户信息和权限列表
     * 用于登录时的用户认证，避免多次数据库查询
     * 
     * @param username 用户名
     * @return 用户信息和权限列表（多行结果）
     */
    UserWithPermissionList selectUserWithPermission(@Param("username") String username);
    
    /**
     * 批量更新用户权限版本号
     * 当角色权限或用户角色发生变化时调用
     * 
     * @param userIds 需要更新的用户ID列表
     * @return 更新成功的记录数
     */
    int batchUpdatePermVersion(@Param("userIds") List<Long> userIds);
    
    /**
     * 根据角色ID查询拥有该角色的所有用户ID
     * 
     * @param roleId 角色ID
     * @return 用户ID列表
     */
    List<Long> selectUserIdsByRoleId(@Param("roleId") Long roleId);
    
}
